﻿using System;
using Misuzilla.Net.Irc;

namespace Misuzilla.Crigate.Authenticate
{
    public interface IAuthorizer
    {
        AuthenticateResult Authenticate(Session session, UserInfo userInfo);
    }

    /// <summary>
    /// 認証結果を保持します。
    /// </summary>
    public class AuthenticateResult : MarshalByRefObject
    {
        /// <summary>
        /// ユーザのアクセスが許可されているかどうかを取得・設定します。
        /// </summary>
        public Boolean IsAuthenticated { get; set; }

        /// <summary>
        /// 認証が失敗した理由のリプライを返します。
        /// </summary>
        public ErrorReply ErrorReply { get; set; }

        /// <summary>
        /// 認証が失敗した理由を返します。
        /// </summary>
        public String ErrorMessage { get; set; }

        public AuthenticateResult()
        {
            IsAuthenticated = true;
        }
        
        public AuthenticateResult(ErrorReply errorReply, String message)
        {
            IsAuthenticated = false;
            ErrorReply = errorReply;
            ErrorMessage = message;
        }
    }

}
